/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package agendadecontatostxt;

import dao.ContatoDAO;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import modelos.Contato;

/**
 *
 * @author ingrid.parruda
 */
public class Operacoes extends javax.swing.JFrame
{

    public static ArrayList<Contato> contacts = new ArrayList<Contato>();
    SalvaTxt salvo = new SalvaTxt();
    private ContatoDAO contatoDAO;

    public Operacoes()
    {
        try
        {
            contatoDAO = new ContatoDAO();
            contacts = contatoDAO.getLista();
        }
        catch (Exception e)
        {
            JOptionPane.showMessageDialog(this, e.getMessage(), "ERRO!", JOptionPane.ERROR_MESSAGE);
        }
    }

    public char inicializa()
    {
        String resp;

        resp = JOptionPane.showInputDialog(null, "Bem vindo a sua agenda de contatos\n"
                + "Escolha a operação desejada: \n"
                + "(1)Adicionar Contato\n"
                + "(2)Procurar Contato\n"
                + "(3)Excluir contato\n"
                + "(4)Listar Contatos\n");
        if (resp == null)
        {
            return '5';
        }
        else
        {
            return resp.charAt(0);
        }
    }

    public void novoContato()
    {
        try
        {
            String nome, numero, operadora, email;
            int resp = -1;

            nome = JOptionPane.showInputDialog("Nome:");

            contacts = contatoDAO.getLista();

            for (Contato c : contacts)
            {
                if (c.getNome().equals(nome))
                {

                    resp = JOptionPane.showConfirmDialog(null, "O nome digitado ja existe, "
                            + "deseja adicionar mais um número?");
                    if (resp == 0)
                    {
                        numero = JOptionPane.showInputDialog("Número:");
                        c.setNumero(c.getNumero() + " | " + numero);
                    }
                    break;
                }
            }

            if (resp == -1)
            {
                numero = JOptionPane.showInputDialog("Número:");
                operadora = JOptionPane.showInputDialog("Operadora:");
                email = JOptionPane.showInputDialog("E-mail:");

                Contato contato = new Contato();
                contato.setNome(nome);
                contato.setNumero(numero);
                contato.setOperadora(operadora);
                contato.setEmail(email);

                boolean resultado = contatoDAO.adicionaContato(contato);

                if (resultado)
                {
                    JOptionPane.showMessageDialog(this, "Contato gravado com sucesso!");
                }
            }
        }
        catch (Exception e)
        {
            JOptionPane.showMessageDialog(this, e.getMessage(), "ERRO!", JOptionPane.ERROR_MESSAGE);
        }

    }

    public void ListarContatos()
    {
        try
        {
            String lista = "";

            if (contacts.isEmpty())
            {
                JOptionPane.showMessageDialog(null, "\n Não há contatos na lista");
            }
            else
            {
                contacts = contatoDAO.getLista();

                for (Contato c : contacts)
                {
                    lista = lista + "\n \n Nome: " + c.getNome() + " - Número: " + c.getNumero()
                            + " - Operadora:  " + c.getOperadora() + " - E-mail: " + c.getEmail();

                }
                JOptionPane.showMessageDialog(null, lista);
            }
        }
        catch (Exception e)
        {
            JOptionPane.showMessageDialog(this, e.getMessage(), "ERRO!", JOptionPane.ERROR_MESSAGE);
        }

    }

    public void excluiContato()
    {
        try
        {
            String nome = JOptionPane.showInputDialog("Digite o nome:");
            boolean exclusao = false;

            contacts = contatoDAO.getLista();
            for (Contato c : contacts)
            {
                if (c.getNome().equals(nome))
                {
                    contatoDAO.excluirContato(c.getCodigo());
                    exclusao = true;
                    JOptionPane.showMessageDialog(null, "Contato excluido com sucesso");
                    break;
                }
            }

            if (!exclusao)
            {
                JOptionPane.showMessageDialog(null, "Contato não encontrado");
            }
        }
        catch (Exception e)
        {
            JOptionPane.showMessageDialog(this, e.getMessage(), "ERRO!", JOptionPane.ERROR_MESSAGE);
        }

    }

    public void pesquisaContato()
    {
        try
        {
            int i = -1;
            String nome = JOptionPane.showInputDialog("Digite o nome:");
            
            contacts = contatoDAO.getLista();
            for (Contato c : contacts)
            {
                if (c.getNome().equals(nome))
                {
                    i = 0;
                    JOptionPane.showMessageDialog(null, "Nome: " + c.getNome()
                            + "\nNúmero: " + c.getNumero()
                            + "\nOperadora: " + c.getOperadora()
                            + "\nE-mail: " + c.getEmail());
                    break;
                }
            }

            if (i == -1)
            {
                JOptionPane.showMessageDialog(null, "Contato não encontrado");
            }
        }
        catch (Exception e)
        {
            JOptionPane.showMessageDialog(this, e.getMessage(), "ERRO!", JOptionPane.ERROR_MESSAGE);
        }
    }
}
